{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6.0+4.gcecbc85.dirty\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import folium\n",
    "\n",
    "print(folium.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "\n",
    "df = pd.read_csv(\n",
    "    os.path.join('data', 'highlight_flight_trajectories.csv')\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us take a glance at the data.\n",
    "Each row represents the trajectory of a flight,\n",
    "and the last column contains the coordinates of the flight path in `GeoJSON` format."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>dep</th>\n",
       "      <th>dest</th>\n",
       "      <th>geojson</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>Place_MontpellierMediterranee_Airport</td>\n",
       "      <td>Place_BastiaPoretta_Airport</td>\n",
       "      <td>{\"type\": \"LineString\", \"coordinates\": [[3.9613...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>Place_Bristol___Lulsgate</td>\n",
       "      <td>Place_TenerifeSur_ReinaSofia_Airport</td>\n",
       "      <td>{\"type\": \"LineString\", \"coordinates\": [[-2.719...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>Place_Valencia_Manises_Airport</td>\n",
       "      <td>Place_Bucuresti_HenriCoanda_Airport</td>\n",
       "      <td>{\"type\": \"LineString\", \"coordinates\": [[-0.481...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0                                    dep  \\\n",
       "0           0  Place_MontpellierMediterranee_Airport   \n",
       "1           1               Place_Bristol___Lulsgate   \n",
       "2           2         Place_Valencia_Manises_Airport   \n",
       "\n",
       "                                   dest  \\\n",
       "0           Place_BastiaPoretta_Airport   \n",
       "1  Place_TenerifeSur_ReinaSofia_Airport   \n",
       "2   Place_Bucuresti_HenriCoanda_Airport   \n",
       "\n",
       "                                             geojson  \n",
       "0  {\"type\": \"LineString\", \"coordinates\": [[3.9613...  \n",
       "1  {\"type\": \"LineString\", \"coordinates\": [[-2.719...  \n",
       "2  {\"type\": \"LineString\", \"coordinates\": [[-0.481...  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9dHJ1ZTsgTF9OT19UT1VDSD1mYWxzZTsgTF9ESVNBQkxFXzNEPWZhbHNlOzwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjMuNC9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuMTEuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjMuNC9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2dpdC5jb20vcHl0aG9uLXZpc3VhbGl6YXRpb24vZm9saXVtL21hc3Rlci9mb2xpdW0vdGVtcGxhdGVzL2xlYWZsZXQuYXdlc29tZS5yb3RhdGUuY3NzIi8+CiAgICA8c3R5bGU+aHRtbCwgYm9keSB7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO21hcmdpbjogMDtwYWRkaW5nOiAwO308L3N0eWxlPgogICAgPHN0eWxlPiNtYXAge3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO3JpZ2h0OjA7bGVmdDowO308L3N0eWxlPgogICAgCiAgICA8c3R5bGU+I21hcF9mNWMzNDNjYmU5MTE0NzFiYjA5MmM2NmFmMTM1N2IyNyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4gICAgCiAgICAKICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfZjVjMzQzY2JlOTExNDcxYmIwOTJjNjZhZjEzNTdiMjciID48L2Rpdj4KPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAogICAgCiAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAKCiAgICB2YXIgbWFwX2Y1YzM0M2NiZTkxMTQ3MWJiMDkyYzY2YWYxMzU3YjI3ID0gTC5tYXAoCiAgICAgICAgJ21hcF9mNWMzNDNjYmU5MTE0NzFiYjA5MmM2NmFmMTM1N2IyNycsIHsKICAgICAgICBjZW50ZXI6IFs0MCwgMTBdLAogICAgICAgIHpvb206IDQsCiAgICAgICAgbWF4Qm91bmRzOiBib3VuZHMsCiAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICB3b3JsZENvcHlKdW1wOiBmYWxzZSwKICAgICAgICBjcnM6IEwuQ1JTLkVQU0czODU3LAogICAgICAgIHpvb21Db250cm9sOiB0cnVlLAogICAgICAgIH0pOwpMLmNvbnRyb2wuc2NhbGUoKS5hZGRUbyhtYXBfZjVjMzQzY2JlOTExNDcxYmIwOTJjNjZhZjEzNTdiMjcpOwogICAgCiAgICAKICAgIHZhciB0aWxlX2xheWVyXzU0ZjRkYzNmYzkzMjQ5YmJiYzMzNzk3NjAwNWZiYmY1ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJywKICAgICAgICB7CiAgICAgICAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAgICAgICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgICAgICAgIm1heE5hdGl2ZVpvb20iOiAxOCwKICAgICAgICAibWF4Wm9vbSI6IDE4LAogICAgICAgICJtaW5ab29tIjogMCwKICAgICAgICAibm9XcmFwIjogZmFsc2UsCiAgICAgICAgInN1YmRvbWFpbnMiOiAiYWJjIgp9KS5hZGRUbyhtYXBfZjVjMzQzY2JlOTExNDcxYmIwOTJjNjZhZjEzNTdiMjcpOwogICAgCiAgICAgICAgCiAgICAgICAgICAgIGdlb19qc29uX2MyMDdiMTNmZGQ2YTQ0ZTQ5OTc2NmE5OWRhMmZkZjMyX29uRWFjaEZlYXR1cmUgPSBmdW5jdGlvbiBvbkVhY2hGZWF0dXJlKGZlYXR1cmUsIGxheWVyKSB7CiAgICAgICAgICAgICAgICBsYXllci5vbih7CiAgICAgICAgICAgICAgICAgICAgbW91c2VvdXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U3R5bGUoZS50YXJnZXQuZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKTt9LAogICAgICAgICAgICAgICAgICAgIG1vdXNlb3ZlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTdHlsZShlLnRhcmdldC5mZWF0dXJlLnByb3BlcnRpZXMuaGlnaGxpZ2h0KTt9LAogICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9mNWMzNDNjYmU5MTE0NzFiYjA5MmM2NmFmMTM1N2IyNy5maXRCb3VuZHMoZS50YXJnZXQuZ2V0Qm91bmRzKCkpO30KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfTsKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fYzIwN2IxM2ZkZDZhNDRlNDk5NzY2YTk5ZGEyZmRmMzIgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbWzMuOTYxMzg5LCA0My41ODMzMzNdLCBbMy45NjgwNTYsIDQzLjU4MDgzM10sIFszLjk3NDcyMiwgNDMuNTc4MzMzXSwgWzMuOTg2Mzg5LCA0My41NzUyNzhdLCBbMy45OTgzMzMsIDQzLjU3MjVdLCBbNC4xNjMzMzMsIDQzLjUzMDU1Nl0sIFs0LjI2OTE2NywgNDMuNTAzODg5XSwgWzQuMzk4ODg5LCA0My40NzExMTFdLCBbNC41NDAyNzgsIDQzLjQzNTI3OF0sIFs0LjcxNjk0NCwgNDMuMzkwNTU2XSwgWzQuOTE3MjIyLCA0My4zNF0sIFs0LjkyODg4OSwgNDMuMzM2OTQ0XSwgWzUuMTU5NzIyLCA0My4yNzY2NjddLCBbNS4zMzMwNTYsIDQzLjIzMTY2N10sIFs1LjcyOTcyMiwgNDMuMjI5MTY3XSwgWzUuODI4ODg5LCA0My4yMjg2MTFdLCBbNi4wMjM4ODksIDQzLjIyNjY2N10sIFs2LjYwMTk0NCwgNDMuMjE5NDQ0XSwgWzYuODQxNjY3LCA0My4zNDYxMTFdLCBbNi44OTMzMzMsIDQzLjM3MzMzM10sIFs3LjM2MjUsIDQzLjMyNzc3OF0sIFs3LjYyMTM4OSwgNDMuMzAxOTQ0XSwgWzguMzAzMDU2LCA0My4xNzA4MzNdLCBbOC40MzQ3MjIsIDQzLjE0NTU1Nl0sIFs4LjYyNjk0NCwgNDMuMTE4MzMzXSwgWzguNzU5MTY3LCA0My4wOTk3MjJdLCBbOS4wNTk0NDQsIDQzLjA1NzIyMl0sIFs5LjA4MzMzMywgNDMuMDUzODg5XSwgWzkuMzk1NTU2LCA0Mi45NzgzMzNdLCBbOS40ODgzMzMsIDQyLjk1NTgzM10sIFs5LjYwMzg4OSwgNDIuOTI3Nzc4XSwgWzkuNTc0NDQ0LCA0Mi44NDcyMjJdLCBbOS41NjgwNTYsIDQyLjgyOTQ0NF0sIFs5LjU0MjIyMiwgNDIuNzU4ODg5XSwgWzkuNTI2MTExLCA0Mi43MTQ3MjJdLCBbOS41MTMzMzMsIDQyLjY3OTQ0NF0sIFs5LjUwNjk0NCwgNDIuNjYxOTQ0XSwgWzkuNDc0NzIyLCA0Mi41NzM2MTFdLCBbOS40ODQ3MjIsIDQyLjU1XV0sICJ0eXBlIjogIkxpbmVTdHJpbmcifSwgInByb3BlcnRpZXMiOiB7ImhpZ2hsaWdodCI6IHsiY29sb3IiOiAiZ3JlZW4iLCAiZGFzaEFycmF5IjogIjUsIDUiLCAiZmlsbENvbG9yIjogIiNmZmFmMDAiLCAid2VpZ2h0IjogM30sICJzdHlsZSI6IHsiY29sb3IiOiAiYmx1ZSIsICJkYXNoQXJyYXkiOiAiNSwgNSIsICJmaWxsQ29sb3IiOiAiI2ZmYWYwMCIsICJ3ZWlnaHQiOiAxLjV9fSwgInR5cGUiOiAiRmVhdHVyZSJ9XSwgInR5cGUiOiAiRmVhdHVyZUNvbGxlY3Rpb24ifQogICAgICAgICAgICAKICAgICAgICAgICAgICAgICwgewogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgb25FYWNoRmVhdHVyZTogZ2VvX2pzb25fYzIwN2IxM2ZkZDZhNDRlNDk5NzY2YTk5ZGEyZmRmMzJfb25FYWNoRmVhdHVyZQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICApLmFkZFRvKG1hcF9mNWMzNDNjYmU5MTE0NzFiYjA5MmM2NmFmMTM1N2IyNyk7CiAgICAgICAgZ2VvX2pzb25fYzIwN2IxM2ZkZDZhNDRlNDk5NzY2YTk5ZGEyZmRmMzIuc2V0U3R5bGUoZnVuY3Rpb24oZmVhdHVyZSkge3JldHVybiBmZWF0dXJlLnByb3BlcnRpZXMuc3R5bGU7fSk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHBvcHVwX2I3MTc3YjE0OTNiNDQ5YWRhYTE3MjJkMmY0YjdmYTRlID0gTC5wb3B1cCh7bWF4V2lkdGg6ICczMDAnCiAgICAgICAgICAgIAogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGh0bWxfNmQ0ZWJjOGU0NjhjNDQ4NmFiNmExNjk3ODM4YTBiYjcgPSAkKCc8ZGl2IGlkPSJodG1sXzZkNGViYzhlNDY4YzQ0ODZhYjZhMTY5NzgzOGEwYmI3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij5QbGFjZV9Nb250cGVsbGllck1lZGl0ZXJyYW5lZV9BaXJwb3J0IFBsYWNlX0Jhc3RpYVBvcmV0dGFfQWlycG9ydDwvZGl2PicpWzBdOwogICAgICAgICAgICAgICAgcG9wdXBfYjcxNzdiMTQ5M2I0NDlhZGFhMTcyMmQyZjRiN2ZhNGUuc2V0Q29udGVudChodG1sXzZkNGViYzhlNDY4YzQ0ODZhYjZhMTY5NzgzOGEwYmI3KTsKICAgICAgICAgICAgCgogICAgICAgICAgICBnZW9fanNvbl9jMjA3YjEzZmRkNmE0NGU0OTk3NjZhOTlkYTJmZGYzMi5iaW5kUG9wdXAocG9wdXBfYjcxNzdiMTQ5M2I0NDlhZGFhMTcyMmQyZjRiN2ZhNGUpCiAgICAgICAgICAgIDsKCiAgICAgICAgICAgIAogICAgICAgIAogICAgCiAgICAgICAgCiAgICAgICAgICAgIGdlb19qc29uXzQ3NGY1ZmVkYTc0NDQyMGNiYWUyZDMzZjY5ZWJlYTExX29uRWFjaEZlYXR1cmUgPSBmdW5jdGlvbiBvbkVhY2hGZWF0dXJlKGZlYXR1cmUsIGxheWVyKSB7CiAgICAgICAgICAgICAgICBsYXllci5vbih7CiAgICAgICAgICAgICAgICAgICAgbW91c2VvdXQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U3R5bGUoZS50YXJnZXQuZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlKTt9LAogICAgICAgICAgICAgICAgICAgIG1vdXNlb3ZlcjogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5zZXRTdHlsZShlLnRhcmdldC5mZWF0dXJlLnByb3BlcnRpZXMuaGlnaGxpZ2h0KTt9LAogICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcF9mNWMzNDNjYmU5MTE0NzFiYjA5MmM2NmFmMTM1N2IyNy5maXRCb3VuZHMoZS50YXJnZXQuZ2V0Qm91bmRzKCkpO30KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfTsKICAgICAgICAKICAgICAgICB2YXIgZ2VvX2pzb25fNDc0ZjVmZWRhNzQ0NDIwY2JhZTJkMzNmNjllYmVhMTEgPSBMLmdlb0pzb24oCiAgICAgICAgICAgIHsiZmVhdHVyZXMiOiBbeyJnZW9tZXRyeSI6IHsiY29vcmRpbmF0ZXMiOiBbWy0yLjcxOTE2NywgNTEuMzgyNzc4XSwgWy0yLjczNjExMSwgNTEuMzgyNzc4XSwgWy0yLjc4NzIyMiwgNTEuMzgyMjIyXSwgWy0yLjgzODMzMywgNTEuMzgxOTQ0XSwgWy0yLjg2NjM4OSwgNTEuMzY2MTExXSwgWy0yLjg5NDcyMiwgNTEuMzUwMjc4XSwgWy0yLjk5ODA1NiwgNTEuMjkyNV0sIFstMy4zNTk3MjIsIDUxLjE3ODYxMV0sIFstMy4zNjI3NzgsIDUxLjE2MTExMV0sIFstMy4zNzE5NDQsIDUxLjEwODg4OV0sIFstMy4zODQxNjcsIDUxLjAzOTE2N10sIFstMy4zODg2MTEsIDUxLjAxMzA1Nl0sIFstMy4zOTgwNTYsIDUwLjk1Nzc3OF0sIFstMy40MTY5NDQsIDUwLjg0NzVdLCBbLTMuNDIzODg5LCA1MC44MDkxNjddLCBbLTMuNDMxOTQ0LCA1MC43NjE2NjddLCBbLTMuNDQ4MzMzLCA1MC42NjY2NjddLCBbLTMuNDUyNSwgNTAuNjQxMzg5XSwgWy0zLjQ2Mzg4OSwgNTAuNTc0MTY3XSwgWy0zLjQ3MzMzMywgNTAuNTE4NjExXSwgWy0zLjQ5MzYxMSwgNTAuMzk4NjExXSwgWy0zLjQ5NTU1NiwgNTAuMzYyNzc4XSwgWy0zLjUwNTI3OCwgNTAuMTg0MTY3XSwgWy0zLjUxNzIyMiwgNDkuOTYwNTU2XSwgWy0zLjUyOTQ0NCwgNDkuNzM3MjIyXSwgWy0zLjU1ODMzMywgNDkuNjU4NjExXSwgWy0zLjYzODYxMSwgNDkuNDRdLCBbLTMuNzI4MzMzLCA0OS4xOTUyNzhdLCBbLTMuNzgzMDU2LCA0OS4wNDY5NDRdLCBbLTMuODA4NjExLCA0OC45NzY5NDRdLCBbLTQuMDYxNjY3LCA0OC4zMDE5NDRdLCBbLTQuMTg0NzIyLCA0Ny45NTcyMjJdLCBbLTQuMzEyNSwgNDcuODI5NDQ0XSwgWy00LjUyNDcyMiwgNDcuNTkxMzg5XSwgWy00Ljk5MDU1NiwgNDcuMDc5MTY3XSwgWy01LjQwODA1NiwgNDYuNjEyNzc4XSwgWy02LjkxOTcyMiwgNDQuODM1Mjc4XSwgWy03LjAxMjc3OCwgNDQuNjk4MDU2XSwgWy03LjE0Mzg4OSwgNDQuNTA0NDQ0XSwgWy04LjkyNjY2NywgNDEuODcyNzc4XSwgWy05LjAxNjExMSwgNDEuNjY3Nzc4XSwgWy05LjE2MTM4OSwgNDEuMzM0NDQ0XSwgWy0xMC4yMzQ0NDQsIDM4Ljg3MzMzM10sIFstMTEuNDQ4MzMzLCAzNS45NjY2NjddLCBbLTEyLjkxMTY2NywgMzQuMjYxMTExXSwgWy0xMy44MzYxMTEsIDMzLjE0OTQ0NF0sIFstMTUuMzAxNjY3LCAzMS4zMDA4MzNdLCBbLTE1Ljg1MDI3OCwgMzAuNDMzODg5XSwgWy0xNi4zNzI3NzgsIDI5LjU5MTM4OV0sIFstMTYuOTkwNTU2LCAyOC45MjgwNTZdLCBbLTE3LjAyMzA1NiwgMjguODkzMzMzXSwgWy0xNy4wOTQ0NDQsIDI4LjgxNjM4OV0sIFstMTcuMjExNjY3LCAyOC42OTA4MzNdLCBbLTE3LjI2MzYxMSwgMjguNjM1XSwgWy0xNy4zMTU1NTYsIDI4LjU3OTE2N10sIFstMTcuMzc0MTY3LCAyOC41MTYzODldLCBbLTE3LjQzOTE2NywgMjguNDQ2Mzg5XSwgWy0xNy40NTIyMjIsIDI4LjQzMjVdLCBbLTE3LjM3NTI3OCwgMjguMzg5NDQ0XSwgWy0xNy4yOSwgMjguMzQxNjY3XSwgWy0xNy4xOTYxMTEsIDI4LjI4OTE2N10sIFstMTcuMTcwNTU2LCAyOC4yNzQ3MjJdLCBbLTE3LjExNSwgMjguMjM0NDQ0XSwgWy0xNy4wMjc3NzgsIDI4LjE3MDgzM10sIFstMTYuODc3MjIyLCAyOC4wNjEzODldLCBbLTE2Ljc3MzA1NiwgMjguMDI4ODg5XSwgWy0xNi42ODc3NzgsIDI4LjAwMjVdLCBbLTE2LjY3NjM4OSwgMjguMDA2NjY3XSwgWy0xNi42NDcyMjIsIDI4LjAxNzIyMl0sIFstMTYuNjIyMjIyLCAyOC4wMjYzODldLCBbLTE2LjYwNDE2NywgMjguMDMzMDU2XSwgWy0xNi41NzI1LCAyOC4wNDQ0NDRdXSwgInR5cGUiOiAiTGluZVN0cmluZyJ9LCAicHJvcGVydGllcyI6IHsiaGlnaGxpZ2h0IjogeyJjb2xvciI6ICJncmVlbiIsICJkYXNoQXJyYXkiOiAiNSwgNSIsICJmaWxsQ29sb3IiOiAiI2ZmYWYwMCIsICJ3ZWlnaHQiOiAzfSwgInN0eWxlIjogeyJjb2xvciI6ICJibHVlIiwgImRhc2hBcnJheSI6ICI1LCA1IiwgImZpbGxDb2xvciI6ICIjZmZhZjAwIiwgIndlaWdodCI6IDEuNX19LCAidHlwZSI6ICJGZWF0dXJlIn1dLCAidHlwZSI6ICJGZWF0dXJlQ29sbGVjdGlvbiJ9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLCB7CiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBvbkVhY2hGZWF0dXJlOiBnZW9fanNvbl80NzRmNWZlZGE3NDQ0MjBjYmFlMmQzM2Y2OWViZWExMV9vbkVhY2hGZWF0dXJlCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICkuYWRkVG8obWFwX2Y1YzM0M2NiZTkxMTQ3MWJiMDkyYzY2YWYxMzU3YjI3KTsKICAgICAgICBnZW9fanNvbl80NzRmNWZlZGE3NDQ0MjBjYmFlMmQzM2Y2OWViZWExMS5zZXRTdHlsZShmdW5jdGlvbihmZWF0dXJlKSB7cmV0dXJuIGZlYXR1cmUucHJvcGVydGllcy5zdHlsZTt9KTsKICAgICAgICAKICAgIAogICAgICAgICAgICB2YXIgcG9wdXBfYjIyMDQ0OWIyNjgzNGI2ZWE5Mjg2MDI5ZjhhMDM2NGYgPSBMLnBvcHVwKHttYXhXaWR0aDogJzMwMCcKICAgICAgICAgICAgCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaHRtbF9hY2QzM2E0ODM2ZGQ0NGVhODkwNjI2NDJjOWI0YjYwZiA9ICQoJzxkaXYgaWQ9Imh0bWxfYWNkMzNhNDgzNmRkNDRlYTg5MDYyNjQyYzliNGI2MGYiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPlBsYWNlX0JyaXN0b2xfX19MdWxzZ2F0ZSBQbGFjZV9UZW5lcmlmZVN1cl9SZWluYVNvZmlhX0FpcnBvcnQ8L2Rpdj4nKVswXTsKICAgICAgICAgICAgICAgIHBvcHVwX2IyMjA0NDliMjY4MzRiNmVhOTI4NjAyOWY4YTAzNjRmLnNldENvbnRlbnQoaHRtbF9hY2QzM2E0ODM2ZGQ0NGVhODkwNjI2NDJjOWI0YjYwZik7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgZ2VvX2pzb25fNDc0ZjVmZWRhNzQ0NDIwY2JhZTJkMzNmNjllYmVhMTEuYmluZFBvcHVwKHBvcHVwX2IyMjA0NDliMjY4MzRiNmVhOTI4NjAyOWY4YTAzNjRmKQogICAgICAgICAgICA7CgogICAgICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgIAogICAgICAgICAgICBnZW9fanNvbl9mZmZiODllYmUwYmQ0ZjVkODUzOWJjM2Q2MTM5N2VjZV9vbkVhY2hGZWF0dXJlID0gZnVuY3Rpb24gb25FYWNoRmVhdHVyZShmZWF0dXJlLCBsYXllcikgewogICAgICAgICAgICAgICAgbGF5ZXIub24oewogICAgICAgICAgICAgICAgICAgIG1vdXNlb3V0OiBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LnNldFN0eWxlKGUudGFyZ2V0LmZlYXR1cmUucHJvcGVydGllcy5zdHlsZSk7fSwKICAgICAgICAgICAgICAgICAgICBtb3VzZW92ZXI6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS50YXJnZXQuc2V0U3R5bGUoZS50YXJnZXQuZmVhdHVyZS5wcm9wZXJ0aWVzLmhpZ2hsaWdodCk7fSwKICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgICAgICBtYXBfZjVjMzQzY2JlOTExNDcxYmIwOTJjNjZhZjEzNTdiMjcuZml0Qm91bmRzKGUudGFyZ2V0LmdldEJvdW5kcygpKTt9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH07CiAgICAgICAgCiAgICAgICAgdmFyIGdlb19qc29uX2ZmZmI4OWViZTBiZDRmNWQ4NTM5YmMzZDYxMzk3ZWNlID0gTC5nZW9Kc29uKAogICAgICAgICAgICB7ImZlYXR1cmVzIjogW3siZ2VvbWV0cnkiOiB7ImNvb3JkaW5hdGVzIjogW1stMC40ODE2NjcsIDM5LjQ4OTQ0NF0sIFstMC40OTIyMjIsIDM5LjQ5MzYxMV0sIFstMC41MzQxNjcsIDM5LjUxMDU1Nl0sIFstMC41NzYzODksIDM5LjUyNzIyMl0sIFstMC41NjYxMTEsIDM5LjUzMTM4OV0sIFstMC41MDQ3MjIsIDM5LjU1NTgzM10sIFstMC40NTM2MTEsIDM5LjU3NjExMV0sIFstMC4zODE5NDQsIDM5LjYwNDcyMl0sIFstMC4zNDA4MzMsIDM5LjYyMTExMV0sIFstMC4yMjgzMzMsIDM5LjY2NjExMV0sIFstMC4yMDc3NzgsIDM5LjY3NDE2N10sIFstMC4wNDUyNzgsIDM5LjgwMTk0NF0sIFstMC4wMDQ3MjIsIDM5LjgzMzg4OV0sIFswLjA0Njk0NCwgMzkuODcwODMzXSwgWzAuMTUsIDM5Ljk0NDQ0NF0sIFswLjI3MDI3OCwgNDAuMDMwNTU2XSwgWzAuNDA3Nzc4LCA0MC4xMjg4ODldLCBbMC41NjI1LCA0MC4yMzk3MjJdLCBbMC41ODgzMzMsIDQwLjI1ODA1Nl0sIFswLjg4ODMzMywgNDAuNDY5MTY3XSwgWzEuMDAzMDU2LCA0MC41NDk3MjJdLCBbMS4wNjIyMjIsIDQwLjU5MDgzM10sIFsxLjIzMTY2NywgNDAuNzA4NjExXSwgWzEuMjU4MDU2LCA0MC43MjY5NDRdLCBbMS40NTE5NDQsIDQwLjg2MDgzM10sIFsxLjUwNTgzMywgNDAuODk3Nzc4XSwgWzEuNzMwMjc4LCA0MS4wNTEzODldLCBbMS44NTMwNTYsIDQxLjEzNDcyMl0sIFsyLjEwNzc3OCwgNDEuMzA3MjIyXSwgWzMuMTg3MjIyLCA0MS40OTQ0NDRdLCBbMy40ODg2MTEsIDQxLjU0NDcyMl0sIFszLjg2MDI3OCwgNDEuNjA1NTU2XSwgWzQuNjY2NjY3LCA0MS43MzMzMzNdLCBbNS4wMTMzMzMsIDQxLjgxXSwgWzUuMzk2Mzg5LCA0Mi4xNTc3NzhdLCBbNS43MDk3MjIsIDQyLjQzODMzM10sIFs2LjE4MDI3OCwgNDIuODUzNjExXSwgWzYuNjAxOTQ0LCA0My4yMTk0NDRdLCBbNi44NDE2NjcsIDQzLjM0NjExMV0sIFs2Ljg5MzMzMywgNDMuMzczMzMzXSwgWzcuMjMsIDQzLjU0OTE2N10sIFs3LjM3MTExMSwgNDMuNjIyMjIyXSwgWzcuNjMyNzc4LCA0My43NTY5NDRdLCBbNy42NTMwNTYsIDQzLjc2NzVdLCBbNy43NTUyNzgsIDQzLjgxOTQ0NF0sIFs4LjIyMTExMSwgNDQuMDU2MTExXSwgWzguODAzNjExLCA0NC4xMzQ3MjJdLCBbOS4wNTQ3MjIsIDQ0LjE5NDcyMl0sIFs5LjU5NDE2NywgNDQuMzIxNjY3XSwgWzEwLjE2MjUsIDQ0LjQ4NDE2N10sIFsxMC44MjIyMjIsIDQ0LjY3Mjc3OF0sIFsxMi4yODEzODksIDQ1LjA3MTExMV0sIFsxMi42NDk3MjIsIDQ1LjAzMjc3OF0sIFsxMi44MDE5NDQsIDQ1LjAxNjk0NF0sIFsxMy4wOTEzODksIDQ0Ljk4NTgzM10sIFsxMy45MTgwNTYsIDQ0Ljg5MjVdLCBbMTQuODc2MTExLCA0NC43MDcyMjJdLCBbMTUuNTMzMDU2LCA0NC41NzVdLCBbMTYuMTQzMzMzLCA0NC40NDgzMzNdLCBbMTYuMzA1NTU2LCA0NC40MTM4ODldLCBbMTYuNTkzODg5LCA0NC4zNTE5NDRdLCBbMTYuODE2Mzg5LCA0NC4zMDM2MTFdLCBbMTcuNjYxMzg5LCA0NC4xMTU4MzNdLCBbMTkuMTA1LCA0NC41OTYzODldLCBbMTkuMjIzODg5LCA0NC42MDU4MzNdLCBbMTkuMzYyNzc4LCA0NC42MTY5NDRdLCBbMjAuNzc2NjY3LCA0NC43MjI3NzhdLCBbMjEuMTY5NDQ0LCA0NC43NDg4ODldLCBbMjEuNTMzMzMzLCA0NC43NzE2NjddLCBbMjIuNjEwNTU2LCA0NC43Nzg2MTFdLCBbMjMuNDQ4ODg5LCA0NC43NzIyMjJdLCBbMjMuNTEyNSwgNDQuNzcxNjY3XSwgWzIzLjY1MjIyMiwgNDQuNzcwODMzXSwgWzIzLjg4MDgzMywgNDQuNzY4ODg5XSwgWzIzLjk4MjUsIDQ0Ljc2ODMzM10sIFsyNC4yMTExMTEsIDQ0Ljc2NjM4OV0sIFsyNC40OTA1NTYsIDQ0Ljc2NDQ0NF0sIFsyNC42NDMwNTYsIDQ0Ljc2MzMzM10sIFsyNC42NjgzMzMsIDQ0Ljc2MzA1Nl0sIFsyNC43ODIyMjIsIDQ0Ljc2MDgzM10sIFsyNS4xNjEzODksIDQ0Ljc1Mzg4OV0sIFsyNS40MjM4ODksIDQ0LjYzMjVdLCBbMjUuNTUsIDQ0LjU3NDE2N10sIFsyNS42MjM2MTEsIDQ0LjU0MDI3OF0sIFsyNS42OTgzMzMsIDQ0LjU0NTI3OF0sIFsyNS44MjMwNTYsIDQ0LjU1MzYxMV0sIFsyNS45MjI3NzgsIDQ0LjU2MDI3OF0sIFsyNi4wODUsIDQ0LjU3MTExMV1dLCAidHlwZSI6ICJMaW5lU3RyaW5nIn0sICJwcm9wZXJ0aWVzIjogeyJoaWdobGlnaHQiOiB7ImNvbG9yIjogImdyZWVuIiwgImRhc2hBcnJheSI6ICI1LCA1IiwgImZpbGxDb2xvciI6ICIjZmZhZjAwIiwgIndlaWdodCI6IDN9LCAic3R5bGUiOiB7ImNvbG9yIjogImJsdWUiLCAiZGFzaEFycmF5IjogIjUsIDUiLCAiZmlsbENvbG9yIjogIiNmZmFmMDAiLCAid2VpZ2h0IjogMS41fX0sICJ0eXBlIjogIkZlYXR1cmUifV0sICJ0eXBlIjogIkZlYXR1cmVDb2xsZWN0aW9uIn0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAsIHsKICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIG9uRWFjaEZlYXR1cmU6IGdlb19qc29uX2ZmZmI4OWViZTBiZDRmNWQ4NTM5YmMzZDYxMzk3ZWNlX29uRWFjaEZlYXR1cmUKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgKS5hZGRUbyhtYXBfZjVjMzQzY2JlOTExNDcxYmIwOTJjNjZhZjEzNTdiMjcpOwogICAgICAgIGdlb19qc29uX2ZmZmI4OWViZTBiZDRmNWQ4NTM5YmMzZDYxMzk3ZWNlLnNldFN0eWxlKGZ1bmN0aW9uKGZlYXR1cmUpIHtyZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzLnN0eWxlO30pOwogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciBwb3B1cF8zZTkwNGRhNzA2NzI0NDQ3YjUyZmIyZjExMWQ1YTQ5OSA9IEwucG9wdXAoe21heFdpZHRoOiAnMzAwJwogICAgICAgICAgICAKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBodG1sXzlhNmIzMmM1Nzk0MzRlNDVhYjVlMmU5ZjBjOWI1MGJhID0gJCgnPGRpdiBpZD0iaHRtbF85YTZiMzJjNTc5NDM0ZTQ1YWI1ZTJlOWYwYzliNTBiYSIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+UGxhY2VfVmFsZW5jaWFfTWFuaXNlc19BaXJwb3J0IFBsYWNlX0J1Y3VyZXN0aV9IZW5yaUNvYW5kYV9BaXJwb3J0PC9kaXY+JylbMF07CiAgICAgICAgICAgICAgICBwb3B1cF8zZTkwNGRhNzA2NzI0NDQ3YjUyZmIyZjExMWQ1YTQ5OS5zZXRDb250ZW50KGh0bWxfOWE2YjMyYzU3OTQzNGU0NWFiNWUyZTlmMGM5YjUwYmEpOwogICAgICAgICAgICAKCiAgICAgICAgICAgIGdlb19qc29uX2ZmZmI4OWViZTBiZDRmNWQ4NTM5YmMzZDYxMzk3ZWNlLmJpbmRQb3B1cChwb3B1cF8zZTkwNGRhNzA2NzI0NDQ3YjUyZmIyZjExMWQ1YTQ5OSkKICAgICAgICAgICAgOwoKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIGxheWVyX2NvbnRyb2xfNDZiN2M1ZTVkNjNmNDgwNWIxZjViZTk5MTBhNWM1YWMgPSB7CiAgICAgICAgICAgICAgICBiYXNlX2xheWVycyA6IHsgIm9wZW5zdHJlZXRtYXAiIDogdGlsZV9sYXllcl81NGY0ZGMzZmM5MzI0OWJiYmMzMzc5NzYwMDVmYmJmNSwgfSwKICAgICAgICAgICAgICAgIG92ZXJsYXlzIDogeyAiUGxhY2VfTW9udHBlbGxpZXJNZWRpdGVycmFuZWVfQWlycG9ydFBsYWNlX0Jhc3RpYVBvcmV0dGFfQWlycG9ydCIgOiBnZW9fanNvbl9jMjA3YjEzZmRkNmE0NGU0OTk3NjZhOTlkYTJmZGYzMiwiUGxhY2VfQnJpc3RvbF9fX0x1bHNnYXRlUGxhY2VfVGVuZXJpZmVTdXJfUmVpbmFTb2ZpYV9BaXJwb3J0IiA6IGdlb19qc29uXzQ3NGY1ZmVkYTc0NDQyMGNiYWUyZDMzZjY5ZWJlYTExLCJQbGFjZV9WYWxlbmNpYV9NYW5pc2VzX0FpcnBvcnRQbGFjZV9CdWN1cmVzdGlfSGVucmlDb2FuZGFfQWlycG9ydCIgOiBnZW9fanNvbl9mZmZiODllYmUwYmQ0ZjVkODUzOWJjM2Q2MTM5N2VjZSwgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgTC5jb250cm9sLmxheWVycygKICAgICAgICAgICAgICAgIGxheWVyX2NvbnRyb2xfNDZiN2M1ZTVkNjNmNDgwNWIxZjViZTk5MTBhNWM1YWMuYmFzZV9sYXllcnMsCiAgICAgICAgICAgICAgICBsYXllcl9jb250cm9sXzQ2YjdjNWU1ZDYzZjQ4MDViMWY1YmU5OTEwYTVjNWFjLm92ZXJsYXlzLAogICAgICAgICAgICAgICAge3Bvc2l0aW9uOiAndG9wcmlnaHQnLAogICAgICAgICAgICAgICAgIGNvbGxhcHNlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICBhdXRvWkluZGV4OiB0cnVlCiAgICAgICAgICAgICAgICB9KS5hZGRUbyhtYXBfZjVjMzQzY2JlOTExNDcxYmIwOTJjNjZhZjEzNTdiMjcpOwogICAgICAgICAgICAKICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x7fcad48526a0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = folium.Map(\n",
    "    location=[40, 10],\n",
    "    zoom_start=4,\n",
    "    control_scale=True,\n",
    "    prefer_canvas=True\n",
    ")\n",
    "\n",
    "\n",
    "def style_function(feature):\n",
    "    return {\n",
    "        'fillColor': '#ffaf00',\n",
    "        'color': 'blue',\n",
    "        'weight': 1.5,\n",
    "        'dashArray': '5, 5'\n",
    "    }\n",
    "\n",
    "\n",
    "def highlight_function(feature):\n",
    "    return {\n",
    "        'fillColor': '#ffaf00',\n",
    "        'color': 'green',\n",
    "        'weight': 3,\n",
    "        'dashArray': '5, 5'\n",
    "    }\n",
    "\n",
    "\n",
    "for index, row in df.iterrows():\n",
    "    c = folium.GeoJson(\n",
    "        row['geojson'],\n",
    "        name=('{}{}'.format(row['dep'], row['dest'])),\n",
    "        overlay=True,\n",
    "        style_function=style_function,\n",
    "        highlight_function=highlight_function\n",
    "    )\n",
    "    folium.Popup('{}\\n{}'.format(row['dep'], row['dest'])).add_to(c)\n",
    "    c.add_to(m)\n",
    "\n",
    "folium.LayerControl().add_to(m)\n",
    "m.save(os.path.join('results', 'Highlight_Function.html'))\n",
    "\n",
    "m"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
